﻿using System;
using Netkk.Common.Interfaces.Repositories;
using Netkk.Common.Interfaces.Services;
using Netkk.Common.Models;
using System.Collections.Generic;
using System.Linq;

namespace Netkk.Library.Services
{
    public class ContentService : IContentService
    {
        private readonly IContentRepository repository;

        public ContentService(IContentRepository repository)
        {
            this.repository = repository;
        }

        //protected bool ValidateContent(Content content)
        //{
        //    if (String.IsNullOrEmpty(content.PageTitle))
        //    {
        //        validationDictionary.AddError("PageTitle", "Bitte einen Seitentitel eingeben.");
        //    }
        //    if (String.IsNullOrEmpty(content.PageContent))
        //    {
        //        validationDictionary.AddError("PageContent", "Bitte einen Seiteninhalt eingeben.");
        //    }
        //    if (String.IsNullOrEmpty(content.PageDescription))
        //    {
        //        validationDictionary.AddError("PageDescription", "Bitte eine Seitenbeschreibung eingeben.");
        //    }
        //    if (String.IsNullOrEmpty(content.PageKeywords))
        //    {
        //        validationDictionary.AddError("PageKeywords", "Bitte mindestens ein Seitenstichwort eingeben.");
        //    }

        //    return validationDictionary.IsValid;
        //}

        public Content GetContentByName(string name)
        {
            IEnumerable<Content> contents = repository.Select();

            Content content = (from c in contents
                               where c.Name.Equals(name, StringComparison.OrdinalIgnoreCase)
                               select c).FirstOrDefault();
            return content;
        }

        public void DeleteContent(Content content)
        {
            repository.Delete(content);
        }

        public bool SaveContent(Content content)
        {
            // Database logic
            try
            {
                repository.Save(content);
            }
            catch
            {
                return false;
            }
            return true;
        }

    }

}
